package evemanutool.utils.httpdata;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import evemanutool.data.cache.MarketInfoEntry;
public class EveCentralQuery {
//URI parts.
private static final String EVECENTRAL_ADDR = "http://api.eve-central.com/api/marketstat?";
private static final String EVECENTRAL_SYSTEM = "usesystem=";
private static final String EVECENTRAL_PARAM_ID = "&typeid=";
private static final List<MarketInfoEntry> EMPTY = Collections.emptyList();
public static List<MarketInfoEntry> getMarketInfo(Collection<Integer> typeIds, String sysCode) {
if (typeIds == null || typeIds.isEmpty()) {
return EMPTY;
}
String evecentralQuery = createQuery(typeIds, sysCode);
long start = System.currentTimeMillis();
try {
HttpURLConnection conn = (HttpURLConnection) new URL(evecentralQuery).openConnection();
if (conn.getResponseCode() != HttpURLConnection.HTTP_OK) {
throw new IOException(conn.getResponseCode() + " " + conn.getResponseMessage());
}
PriceParser parser = new PriceParser(conn.getInputStream(), Long.parseLong(sysCode));
parser.parse();
conn.disconnect();
System.out.println("Getting " + typeIds.size() + " prices from eve-central.com... " +
(System.currentTimeMillis() - start) + " ms");
return parser.getResult();
} catch (MalformedURLException e) {
System.err.println(e.toString());
return EMPTY;
} catch (IOException e) {
System.err.println(e.toString() + "\t" + evecentralQuery);
return EMPTY;
}
}
private static String createQuery(Collection<Integer> typeIds, String sysCode) {
StringBuilder buf = new StringBuilder(EVECENTRAL_ADDR);
buf.append(EVECENTRAL_SYSTEM).append(sysCode);
for (Integer i: typeIds) {
buf.append(EVECENTRAL_PARAM_ID).append(i);
}
return buf.toString();
}
}